#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <assert.h>

typedef int QUdata;//队列存储的数据类型

typedef struct QUEUE{
    struct QUEUE* next;
    QUdata x;
}QE;

typedef struct PQ{
    QE* phead;
    QE* ptail;
    int size;
}PQ;
//存一个头指针和尾指针，方便增加数据在尾部
void QU_destroy(PQ *p);
void QU_init(PQ* p);
void QU_push(PQ* p,QUdata);
void QU_headpop(PQ*);
bool QU_empty(PQ* );